const express=require('express');
const routes=express.Router();
//调用md5-node插件
const md5=require('md5-node');
const mysql=require('mysql');
var pool=mysql.createPool({
//    最大链接数
    connectionLimit:10,
//    主机
    host:'localhost',
//    数据库登陆用户名
    user:'root',
//    登录密码
    password:'123456',
//    当前项目链接的数据库
    database:'stutest'
})

//设置路由规则
routes.route('/')
    .get((req,resp)=>{
//    渲染视图
    resp.render('login',{});
})
    .post((req,resp)=>{
        // console.log(req.body);
    //    1.判断查询的表
        if(req.body.post==1){
            var tabs='teach_login';  //教师表
            var redURL='/home_teach';   //链接教师首页
        }else{
            var tabs='stu_msg';     //学生表
            var redURL='/home';     //链接学生首页
        }
    //    2.提取登陆的工号/学号 +密码
        const uid=req.body.uid.trim();
        const pwd=md5(req.body.pwd.trim());
    //    3.拼接sql语句
        var sql=`select * from ${tabs} where uid=${uid} and pwd='${pwd}'`;
        // console.log(sql);
    //   5. 链接数据库
        pool.getConnection(function (error,connection) {
            if(error) throw error;
        //    6.执行sql语句
            connection.query(sql,(err,result)=>{
            //    9.输出查询结果
                if(result.length !=0){
                //    查询成功之后：（1）将uid和post存入cookie;（2）将uid+post存入login数据表
                //    13.将uid和post存入cookie
                    resp.cookie('uid',uid,{maxAge:86400000,httpOnly:true})
                    resp.cookie('posts',req.body.post,{maxAge:86400000,httpOnly:true})
                    resp.cookie('pwd',pwd,req.body.post,{maxAge:86400000,httpOnly:true})
                    resp.cookie('sub_id',result[0].sub_id,{maxAge:86400000,httpOnly:true})
                //    11.获取当前系统时间戳
                    const now=Date.now();
                //    10.拼接添加的sql语句
                    var sql_add=`insert into login (login_uid,logintmp,post)value(${uid},${now},${req.body.post})`;
                //    11.执行sql语句
                    connection.query(sql_add,(err,result)=>{
                    //    7.释放链接
                        connection.release();
                    //    12.判断result的数据
                        if(result){
                        //    添加登录记录成功
                            resp.redirect(redURL)
                        }
                    //    判断是否有语法错误
                        if(err)throw err;
                    })
                }else {
                    //在本页面刷新重新登录
                    resp.redirect('/');
                }
            //    8.判断err错误对象是否为真
                if(err)throw err;
            })
        })
    })

//允许访问路由实例
module.exports=routes;